<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>22_reduce对象数组统计</title>
</head>

<body>
  <script>
    var arr = [
      { price: 5,  count: 1 },
      { price: 10, count: 2 },
      { price: 15, count: 3 }
    ];


    var result = arr.reduce(function a(prev, next, index) {

      // 以 return 的形式书写每次的叠加条件
      return prev + next.price * next.count;
    }, 0)

    console.log(result);


    /**
     * reduce 原理
     *    1. 准备了一个初始值, 按照你传递的第二个参数来定
     *      var init = 70;
     *    2. 根据原始数组了调用 a 函数
     *      => 第一次调用 a(0,  5,  0, 原始数组),   return 0 + 5,    把 返回值再次赋值给 init
     *      => 第二次调用 a(5,  20, 1, 原始数组),   return 5 + 20,   把 返回值再次赋值给 init
     *      => 第三次调用 a(25, 45, 2, 原始数组),   return 25 + 45,  把 返回值再次赋值给 init
    */
  </script>
</body>

</html>
